package OOA.com.JavaBasis.permissANDstructure;
/*
* 内存管理
* jvm = 方法区 + 栈 + 堆
*
* 方法区
* 存储.class相关的内容（每个class对象编译都会生成一个.class文件，方法区存放的就是类的内容）
* 存储类的成员变量、成员方法【成员方法是有地址值的】
*
* 栈
* 【特点是：先进后出】main方法最先进入
* 存储的如果是基本数据，直接存储值
* 存储的如果是引用数据，存储的是引用的地址值
* 栈会为每一次执行的方法开辟一块空间3，叫“栈帧”，生命周期：方法被调用开始，到最后一句代码结束
* 局部变量存储在栈中【因为方法在栈中是所以局部变量也在】，生命周期：从方法创建开始，到方法最后一句代码结束
*
* 堆（heap）
* 存储new出来的东西
* 存放的是对象的值【每个存储对象在堆中都有一个唯一的地址值，和栈中引用的地址值一致】
* 成员变量存储在堆中【因为对象在堆中，所以成员变量也在】，生命周期：从对象被创建开始，到变量回收为止
*
* 垃圾回收机制（GC)
* 是jVM自带的一个线程（自动运行的程序），用于回收没有任何引用所指的对象
* （所谓的垃圾：指代码运行过程中无用的代码，是占内存的但是无法使用到它）
* GC对程序员来说是透明的，我们可以通过“建议”JVM的的方式来实现垃圾回收：System.gc（）
* 如果不可用的对象在堆中存储过多，就会出现内存泄露问题，所以建议在某个对象使用后，再也不用的情况下，一定要进行null值处理【student = null】
* Student student = new Student（）；
* student = null；
* */
public class Jvm {
}
